design patterns javascript interview questions